//package com.driver.impl;
//
//import com.driver.model.TemperatureData;
//import com.driver.service.TcpService;
//import org.springframework.stereotype.Service;
//
//import java.io.*;
//import java.net.ServerSocket;
//import java.net.Socket;
//import java.time.LocalDateTime;
//import java.time.format.DateTimeFormatter;
//
///*
//* 处理接收到的具体的电压数据
//*
//*
//* */
//@Service
//public class TcpImpl implements TcpService {
//
//    Socket socket;
//
//    TemperatureData temperatureData = new TemperatureData();
//
//    private static final double MIN_VOLTAGE = -45.0;
//    private static final double MAX_VOLTAGE = 45.0; // 假设最大安全电压为45V
//    private static final String LOG_FILE_PATH = "voltage_log.txt";
//
//    //创建一个sendAlert方法用于发送警告
//    private void sendAlert(double voltage) {
//        System.out.println("警报已发送：电压异常，当前电压值：" + voltage + "V");
//    }
//
//   /*
//   * 将电压数据记录到日志文件中。
//   * 此方法通过文件写入操作，将当前时间及对应的电压数据以指定格式写入到日志文件中。
//   * 如果文件不存在，会创建新文件；如果文件已存在，会追加写入。
//   *
//   * voltage 电压值，以双精度浮点数表示。
//   * */
//    private void logVoltageData(double voltage) {
//        try (FileWriter writer = new FileWriter(LOG_FILE_PATH, true)) {
//            // 获取当前的本地日期和时间
//            LocalDateTime now = LocalDateTime.now();
//            // 定义日期时间格式化器
//            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//            // 根据格式化器将当前时间格式化为字符串
//            String timestamp = now.format(formatter);
//            // 构造日志条目，包括时间戳和电压数据
//            String logEntry = timestamp + ", Voltage: " + voltage + "V\n";
//            // 将日志条目写入到文件中
//            writer.write(logEntry);
//            // 输出信息表示数据已成功写入日志文件
//            System.out.println("电压数据已记录到日志文件。");
//
//        } catch (IOException e) {
//            // 捕获并处理文件写入过程中的异常
//            System.err.println("记录日志时发生错误: " + e.getMessage());
//        }
//    }
//
//
//    @Override
//    public TemperatureData processVoltageData(Double voltage) {
//
//        System.out.println("接收到的电压值为: " + voltage + "V");
//
//        if (voltage < MIN_VOLTAGE || voltage > MAX_VOLTAGE) {
//            System.out.println("警告：电压值超出安全范围(" + MIN_VOLTAGE + "V - " + MAX_VOLTAGE + "V)，实际值：" + voltage + "V");
//            sendAlert(voltage); // 发送警告通知
//        } else {
//            System.out.println("电压值正常: " + voltage + "V");
//        }
//        // 记录日志
//        logVoltageData(voltage);
//        temperatureData.setVoltage(voltage);
//        return temperatureData;
//    }
//
//
//
//    public static class TcpServer {
//        private static final int PORT = 8080; // 监听端口
//        private static final TcpService voltageProcessor = new TcpImpl();
//
//        public static void main(String[] args) {
//            new TcpServer().startServer();
//        }
//
//        public void startServer() {
//            try (ServerSocket serverSocket = new ServerSocket(PORT)) {
//                System.out.println("服务器正在监听端口: " + PORT);
//                while (true) {
//                    try (Socket clientSocket = serverSocket.accept();
//                         BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
//                         PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true)) {
//
//                        String inputLine;
//                        while ((inputLine = in.readLine()) != null) {
//                            // 假设上位机发送的是电压值的字符串表示
//                            double voltage = Double.parseDouble(inputLine.trim());
//                            voltageProcessor.processVoltageData(voltage);
//                        }
//                    } catch (IOException e) {
//                        System.err.println("处理客户端连接时发生错误: " + e.getMessage());
//                    }
//                }
//            } catch (IOException e) {
//                System.err.println("服务器启动失败: " + e.getMessage());
//            }
//        }
//    }
//}
